class ProcessosController < ApplicationController
  def index
    @processos = Processo.find(:all, :order => 'created_at DESC')
  end

  def show
    @processo = Processo.find(params[:id], :include => [:matriz, :envolvimentos])
  end

  def new
    @processo = Processo.new
  end

  def create
    @processo = Processo.new(params[:processo])
    
    if @processo_is_apenso = params[:processo_is_apenso]
      @processo.to_apenso(params[:processo][:codigo_matriz])
    end
  
    if @processo.save
      flash[:notice] = 'Processo criado com sucesso'
      redirect_to processos_url
    else
      render :action => :new
    end
  end

  def edit
    @processo = Processo.find(params[:id])
    @processo_is_apenso = @processo.is_apenso?
    @matriz_to_apenso_disabled = @processo.has_apensos?
  end

  def update
    @processo = Processo.find(params[:id])
    
    if @processo_is_apenso = params[:processo_is_apenso]
      flag_matriz_to_apenso = true if @processo.is_matriz?
      @processo.to_apenso(params[:processo][:codigo_matriz])
    elsif @processo.is_apenso?
      flag_apenso_to_matriz = true
      @processo.to_matriz
    end
    
    if @processo.update_attributes(params[:processo])
      flash[:notice] = 'Processo atualizado com sucesso'
      if flag_matriz_to_apenso
        flash[:info] = 'O processo matriz tornou-se apenso de ' + params[:processo][:codigo_matriz]
      elsif flag_apenso_to_matriz
        flash[:info] = 'O processo apenso tornou-se matriz'
      end
      redirect_to processo_url(@processo)
    else
      render :action => :edit
    end
  end

  def destroy
    Processo.find(params[:id]).destroy
    flash[:notice] = 'Processo excluído com sucesso'
    redirect_to processos_url
  end
  
  # GET /processos;search_envolvido
  def search_envolvido
    if request.xhr?
      query = params[:q]
      unless query.blank?
        @envolvidos = Envolvido.find(:all, :limit => 5, :conditions => ["nome like ?", "%#{query}%"])
        render :partial => 'search_result', :layout => false
      end
    end
  end
  
  # GET /processos;check_codigo
  def check_codigo
    codigo = params[:codigo]
    @processo = (codigo.blank?)? "" : Processo.find_by_codigo(codigo)
  end
  
  # GET /processos;check_codigo_matriz
  def check_codigo_matriz
    codigo_matriz = params[:codigo_matriz]
    @processo = (codigo_matriz.blank?)? "" : Processo.find_by_codigo(codigo_matriz)
  end
  
  # POST /processos/1;add_envolvido?envolvido_id=1&enquadramento_id=1
  def add_envolvido
    processo = Processo.find(params[:id])
    envolvido = Envolvido.find(params[:envolvimento][:envolvido_id])
    enquadramento = Enquadramento.find(params[:envolvimento][:enquadramento_id])
    
    @envolvimento = Envolvimento.create(:processo => processo, :envolvido => envolvido, :enquadramento => enquadramento)
    @processo = processo.reload
  end
  
  # POST /processos/1;remove_envolvido?envolvido_id=1
  def remove_envolvido
    @envolvido = Envolvido.find(params[:envolvido_id])
    @processo = Processo.find(params[:id])
    Envolvimento.find_by_processo_and_envolvido(@processo, @envolvido).destroy
    @processo.reload
  end
  
  def noob
    render :inline => "#{link_to 'Link intessante', 'http://www.google.com.br/search?q=rails+sitepoint+free+ebook'}"
  end
end